#!/bin/bash

declare usuario="$1"                        # nombre de usuario
declare contrasena="$2"                     # nueva contraseña
declare archivo=$(mktemp -t)                # archivo temporal para almacenar el contenido
                                            # del archivo /etc/shadow

chmod 660 /etc/shadow                       # permiso necesarios en /etc/shadow


# cambia la línea del archivo /etc/shadow correspondiente al nombre de usuario del que se
# desea cambiar la contraña, redirecciona la salida al archivo temporal
sed -e s/^$usuario:[^:]*/$usuario:$(mkpasswd -H md5 "$contrasena" | sed 's/\//\\\//g')/ \
       /etc/shadow > "$archivo"

cat "$archivo" > /etc/shadow                # modifica el contenido del archivo /etc/shadow
chmod 640 /etc/shadow                       # restaura los permisos originales
rm "$archivo"                               # elimina el archivo temporal

exit 0

